home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
BARNET
/
COMPILER
/
SATHER
/
!Sather
/
System
/
Common
/
CONFIG
< prev
Wrap
Text File
|
1997-06-08
|
81KB
|
1,496 lines
-- This file has been created by using cpp on CONFIG.proto
-- in this directory and by using many variables defined
-- in the top level Makefile. Please do not edit it
-- Configuration File for the Sather Compiler Version 1.1
-- some options for the compiler (see the runtime spec
-- for a detailed description of them).
PLATFORMS: "riscos,unix";
DEFAULT_PLATFORM: "riscos";
DISTRIBUTED: false;
THREADS: false;
ZONES: false;
TRACE: false;
LIBRARY: "SATHER_LIBRARY","Library/Lib.sam";
VERSION: "1.1";
CC_OPTIONS: "";
C_COMPILER: "gcc ";
GC_LINK: "CS:gc.o";
LINK_OPTIONS: "-lm";
MAKE_COMMAND: "amu";
OBJECT_EXT: ".o";
LIB_EXT: ".o";
C_EXT: ".c";
SHELL_SEP: "\n";
EXEC_OPTION: "-o ";
NULL_SEGFAULTS: false;
SEPARATE_POINTERS: false;
PSATHER_FLAG: "","";
CC_DEBUG_FLAG: "","-g";
CC_OPTIMIZE_FLAG: "","-O2";
CC_PROLIX_FLAG: "",""; -- passed to the C compiler (prolix implies verbose)
MAKE_VERBOSE_FLAG: "-s","-s"; -- passed to make
FORTRAN_APPEND_UNDERSCORE: "false";
FORTRAN_PREFIX_UNDERSCORE: "false";
FORTRAN_BIND_FUNC: "true";
-- Define here all classes if their assignment is guaranteed to
-- be atomic (by the underlying Compiler/Hardware). Those classes may NOT
-- have a reference object as attribute, but the list is not restricted
-- to builtin classes. If you add a class here that is not atomic,
-- you will get very hard to trace bugs, and if you forget to add
-- some classes, your program runs slower. Note that you should not
-- try to add classes by trial and error, as an error may show up
-- only much too late.
ATOMIC_CLASSES: "INT","CHAR","FLT","FLTD","BOOL","CPX","PREFETCH","THREAD_ID", "F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL", "F_DOUBLE", "F_COMPLEX";
-- List here all classes whose layout is defined in runtime.h (or
-- some other header file)
BUILTIN_CLASSES: "$OB","INT","CHAR","BOOL","STR","FLT","FLTD",
"FLTX","FLTDX", "EXT_OB", "RUNTIME", "C_UNIX",
"THREAD_ID","PREFETCH","LL_LOCK","SPINLOCK",
"F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL",
"F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
"F_STRING", "F_HANDLER",
"F_ARRAY{F_INTEGER}", "F_ARRAY{F_REAL}",
"F_ARRAY{F_CHARACTER}", "F_ARRAY{F_LOGICAL}",
"F_ARRAY{F_DOUBLE}", "F_ARRAY{F_COMPLEX}",
"F_ARRAY{F_DOUBLE_COMPLEX}",
"F_ARRAY2{F_INTEGER}", "F_ARRAY2{F_REAL}",
"F_ARRAY2{F_CHARACTER}", "F_ARRAY2{F_LOGICAL}",
"F_ARRAY2{F_DOUBLE}", "F_ARRAY2{F_COMPLEX}",
"F_ARRAY2{F_DOUBLE_COMPLEX}",
"F_ARRAY3{F_INTEGER}", "F_ARRAY3{F_REAL}",
"F_ARRAY3{F_CHARACTER}", "F_ARRAY3{F_LOGICAL}",
"F_ARRAY3{F_DOUBLE}", "F_ARRAY3{F_COMPLEX}",
"F_ARRAY3{F_DOUBLE_COMPLEX}",
C_CHAR, C_UNSIGNED_CHAR, C_SIGNED_CHAR, C_SHORT,
C_INT, C_LONG, C_UNSIGNED_SHORT, C_UNSIGNED_INT,
C_UNSIGNED_LONG, C_FLOAT, C_DOUBLE, C_LONG_DOUBLE,
C_PTR, C_CHAR_PTR, C_UNSIGNED_CHAR_PTR,
C_SIGNED_CHAR_PTR, C_SHORT_PTR, C_INT_PTR, C_LONG_PTR,
C_UNSIGNED_SHORT_PTR, C_UNSIGNED_INT_PTR,
C_UNSIGNED_LONG_PTR, C_FLOAT_PTR, C_DOUBLE_PTR,
C_LONG_DOUBLE_PTR, C_SIZE_T, C_PTRDIFF_T;
-- Here you should list all the builtin classes that are reference free,
-- that is, they do not have an attribute of an abstract or reference type
REFERENCE_FREE: "INT","CHAR","BOOL","STR","FLT","FLTD",
"FLTX","FLTDX",
"F_INTEGER","F_REAL", "F_CHARACTER","F_LOGICAL",
"F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
"THREAD_ID","PREFETCH";
POLLING: 0;
AREF_ASIZE: no_pre,no_post,reads "@0::asize",
attr_access 1,
var "@r $$;",exec "$$=ASIZE(@(0)$0);" "$$",
f_var "@r $$;",f_exec "if(^0) $$=ASIZE(@(0)$0); else READASIZE($$,@0,$0);" "$$";
AREF_AGET: no_pre,no_post,reads "@0::[]" "@0::asize",
attr_access 1 0 0,
var "@r $$;",
exec "$$=@(r)ARR(@(0)$0,$1);" "$$",
f_exec "#if %r==0" "\tif(^0) $$=@(r)ARR(@(0)$0,$1); else F_R_RARR_NA($$,@0,$0,$1);"
"#elif %r==1" "\tif(^0) $$=@(r)ARR(@(0)$0,$1); else F_VA_RARR_NA($$,@0,$0,$1);"
"#elif %r==2" "\tif(^0) VASS_LP($$,@r,ARR(@(0)$0,$1)); else F_V_RARR_LP(@r,$$,@0,$0,$1);"
"#endif" "$$";
AREF_ASET: no_pre,no_post,writes "@0::[]",reads "@0::asize",
attr_access 1 0 0,
exec "SARR(@(0)$0,$1,@(2)$2);",
f_exec "#if %2==0" "\tif(^0) SARR(@(0)$0,$1,@(2)$2); else F_R_WARR_NA(@0,$0,$1,$2);"
"#elif %2==1" "\tif(^0) SARR(@(0)$0,$1,@(2)$2); else F_VA_WARR_NA(@0,$0,$1,$2);"
"#elif %2==2" "\tif(^0) { CHK_BOUNDS($1,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$1],@2,$2);} else F_V_WARR_LP(@0,$0,$1,@2,$2);"
"#endif";
AREF_ACLEAR: no_pre,no_post,writes "@0::[],@0::asize",
attr_access 1, -- the implementation is about as expensive as one access in pSather
exec "AREFACLEAR($0);",
f_exec "if(^0) AREFACLEAR($0); else F_AREFACLEAR_A(@0,$0);";
AREF_ACOPY: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
attr_access 5 5,
exec "AREFACOPY($0,$1);",
f_exec "if(^0 && ^1) AREFACOPY($0,$1); else F_AREFACOPY_AA(@0,@P0,$0,$1);";
AREF_ACOPY_BEG: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
attr_access 5 0 5,
exec "AREFACOPYB($0,$1,$2);",
f_exec "if(^0 && ^2) AREFACOPYB($0,$1,$2); else F_AREFACOPYB_AA(@0,@P0,$0,$1,$2);";
AREF_ACOPY_BEG_NUM: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
attr_access 5 0 0 5,
exec "AREFACOPYBN($0,$1,$2,$3);",
f_exec "if(^0 && ^3) AREFACOPYBN($0,$1,$2,$3); else F_AREFACOPYBN_AA(@0,@P0,$0,$1,$2,$3);";
AREF_ACOPY_BEG_NUM_SRCBEG: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
attr_access 5 0 0 0 5,
exec "AREFACOPYBNS($0,$1,$2,$3,$4);",
f_exec "if(^0 && ^4) AREFACOPYBNS($0,$1,$2,$3,$4); else F_AREFACOPYBNS_AA(@0,@P0,$0,$1,$2,$3,$4);";
AREF_AELTB: reads "@0::[]" "@0::asize",
attr_access 1,
var "INT $$br;",
init "$$br=ASIZE(@(0)$0);",
break "$$br",
temp "@r a$$;",
iter "a$$=ARR(@(0)$0,$#);" "a$$",
f_init "if(^0) $$br=ASIZE(@(0)$0); else $$br=F_ASIZE(@0,$0);",
f_iter "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$#); else F_R_RARR_NA(a$$,@0,$0,$#);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$#); else F_VA_RARR_NA(a$$,@0,$0,$#);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif" "a$$";
AREF_AELT_BEGB: reads "@0::[]" "@0::asize",
attr_access 1 0,
var "INT $$c,$$s;",
temp "@r a$$;",
init "$$c=$1-1;$$s=ASIZE(@(0)$0);",
f_init "$$c=$1-1;$$s=F_ASIZE(@0,$0);",
iter "if(++$$c>=$$s) @@;"
"a$$=ARR(@(0)$0,$$c);" "a$$",
f_iter "if(++$$c>=$$s) @@;"
"#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif" "a$$";
AREF_AELT_BEG_NUMB: reads "@0::[]" "@0::asize",
attr_access 1 0 0,
var "INT $$c,$$m;",
temp "@r a$$;",
init "$$c=$1-1;$$m=$1+$2;",
iter "if(++$$c>=$$m) @@;"
"a$$=ARR(@(0)$0,$$c);" "a$$",
f_iter "if(++$$c>=$$m) @@;"
"#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif"
"a$$";
AREF_AELT_BEG_NUM_STEPB: reads "@0::[]" "@0::asize",
attr_access 1 0 0 0,
var "INT $$c,$$m;",
temp "@r a$$;",
init "$$c=$1;$$m=$1+$2*$3;",
iter "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m) @@;"
"a$$=ARR(@(0)$0,$$c);" "$$c+=$3;" "a$$",
f_iter "if($$c>=$$m) @@;"
"#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif" "$$c+=$3;" "a$$";
AREF_ASETB: writes "@0::[]",
attr_access 1,
reads "@0::asize",
var "INT $$br;",
init "$$br=ASIZE(@(0)$0);",
f_init "$$br=F_ASIZE(@0,$0);",
break "$$br",
iter "SARR(@(0)$0,$#,@(1)$1);",
f_iter "#if %1==0" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_R_WARR_NA(@0,$0,$#,$1);"
"#elif %1==1" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_VA_WARR_NA(@0,$0,$#,$1);"
"#elif %1==2" "if(^0) { CHK_BOUNDS($#,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$#],@1,$1);} else F_V_WARR_LP(@0,$0,$#,@1,$1);"
"#endif";
AREF_ASET_BEGB: writes "@0::[]",
reads "@0::asize",
attr_access 1 0,
var "INT $$c,$$s;",
init "$$c=$1-1;$$s=ASIZE(@(0)$0);",
f_init "$$c=$1-1;$$s=F_ASIZE(@0,$0);",
iter "if(++$$c>=$$s) @@;"
"SARR(@(0)$0,$$c,@(2)$2);",
f_iter "if(++$$c>=$$s) @@;"
"#if %2==0" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_R_WARR_NA(@0,$0,$$c,$2);"
"#elif %2==1" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_VA_WARR_NA(@0,$0,$$c,$2);"
"#elif %2==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@2,$2);} else F_V_WARR_LP(@0,$0,$$c,@2,$2);"
"#endif";
AREF_ASET_BEG_NUMB: writes "@0::[]",
reads "@0::asize",
attr_access 1 0 0,
var "INT $$c,$$m;",
init "$$c=$1-1;$$m=$1+$2;",
iter "if(++$$c>=$$m) @@;"
"SARR(@(0)$0,$$c,@(3)$3);",
f_iter "if(++$$c>=$$m) @@;"
"#if %3==0" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_R_WARR_NA(@0,$0,$$c,$3);"
"#elif %3==1" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_VA_WARR_NA(@0,$0,$$c,$3);"
"#elif %3==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@3,$3);} else F_V_WARR_LP(@0,$0,$$c,@3,$3);"
"#endif";
AREF_ASET_BEG_NUM_STEPB: reads "@0::[]",
writes "@0::asize",
attr_access 1 0 0 0,
var "INT $$c,$$m;",
init "$$c=$1;$$m=$1+$2*$3;",
iter "if($$c>=$$m) @@;"
"SARR(@(0)$0,$$c,@(4)$4);" "$$c+=$3;",
f_iter "if($$c>=$$m) @@;"
"#if %4==0" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_R_WARR_NA(@0,$0,$$c,$4);"
"#elif %4==1" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_VA_WARR_NA(@0,$0,$$c,$4);"
"#elif %4==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@4,$4);} else F_V_WARR_LP(@0,$0,$$c,@4,$4);"
"#endif" "$$c+=$3;";
AREF_AINDB: reads "@0::asize",
attr_access 0,
var "INT $$br;",
init "$$br=ASIZE(@(0)$0);",
f_init "if(^0) $$br=ASIZE(@(0)$0); else $$br=F_ASIZE(@0,$0);",
break "$$br",
temp "@r r$$;",
iter "r$$=$#;" "r$$";
AREF_ARRAY_PTR: exec "(void *)$0->arr_part";
-- THIS FILE IS WRONG FOR pSather and VALUE TYPES!
AVAL_ASIZE: no_pre,no_post,reads "@0::asize",
var "@r $$;",exec "$$=VASIZE(@0);" "$$";
AVAL_AGET: no_pre,no_post,reads "@0::[]" "@0::asize",
var "@r $$;",
exec "$$=@(r)VARR(@0,$0,$1);" "$$";
AVAL_ASET: no_pre,no_post,writes "@0::[]",reads "@0::asize",
var "@r $$;",
exec "$$=$0;VSARR(@0,$$,$1,@(2)$2);" "$$";
AVAL_ACOPY: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
var "@r $$;",
exec "$$=$0;AVALACOPY(@0,$$,$1);" "$$";
AVAL_ACOPY_BEG: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
var "@r $$;",
exec "$$=$0;AVALACOPYB(@0,$$,$1,$2);" "$$";
AVAL_ACOPY_BEG_NUM: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
var "@r $$;",
exec "$$=$0;AVALACOPYBN(@0,$$,$1,$2,$3);" "$$";
AVAL_ACOPY_BEG_NUM_SRCBEG: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
var "@r $$;",
exec "$$=$0;AVALACOPYBNS(@0,$$,$1,$2,$3,$4);" "$$";
AVAL_AELTB: reads "@0::[]" "@0::asize",
var "INT $$br;",
init "$$br=VASIZE(@0);",
break "$$br",
temp "@r a$$;",
iter "a$$=VARR(@0,$0,$#);" "a$$";
AVAL_AELT_BEGB: reads "@0::[]" "@0::asize",
var "INT $$c,$$s;",
temp "@r a$$;",
init "$$c=$1-1;$$s=VASIZE(@0);",
iter "if(++$$c>=$$s) @@;"
"a$$=VARR(@0,$0,$$c);" "a$$";
AVAL_AELT_BEG_NUMB: reads "@0::[]" "@0::asize",
var "INT $$c,$$m;",
temp "@r a$$;",
init "$$c=$1-1;$$m=$1+$2;",
iter "if(++$$c>=$$m) @@;"
"a$$=VARR(@0,$0,$$c);" "a$$";
AVAL_AELT_BEG_NUM_STEPB: reads "@0::[]" "@0::asize",
var "INT $$c,$$m;",
temp "@r a$$;",
init "$$c=$1;$$m=$1+$2*$3;",
iter "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m) @@;"
"a$$=VARR(@0,$0,$$c);" "$$c+=$3;" "a$$";
AVAL_AINDB: reads "@0::asize",
var "INT $$br;",
init "$$br=VASIZE(@0);",
break "$$br",
temp "@r r$$;",
iter "r$$=$#;" "r$$";
BOOL_NOT: no_pre,no_post,var "@r $$;",exec "$$=!($0);" "$$";
BOOL_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=$0==$1;" "$$";
BOOL_INT: no_pre,no_post,var "@r $$;",exec "$$=(INT)$0;" "$$";
CHAR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=$0==$1;" "$$";
CHAR_INT: no_pre,no_post,var "@r $$;",exec "$$=(INT)((unsigned char)$0);" "$$";
-- the following definitions assume that all floating point
-- operations return NaN if used with wrong arguments (a la IEEE)
-- If this is not the case for some machines, all functions that
-- could break should get a 'fragile'
FLT_PLUS: no_pre,no_post,var "@r $$;",exec "$$=$0+$1;" "$$";
FLT_MINUS: no_pre,no_post,var "@r $$;",exec "$$=$0-$1;" "$$";
FLT_NEGATE: no_pre,no_post,var "@r $$;",exec "$$= -$0;" "$$";
FLT_TIMES: no_pre,no_post,var "@r $$;",exec "$$=$0*$1;" "$$";
FLT_DIV: no_pre,no_post,var "@r $$;",exec "$$=FLTDIV($0,$1);" "$$";
FLT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
FLT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
IR_ISNORMAL: no_pre,no_post,var "@r $$;",declare "_FM_B_F(isnormal)",exec "$$=ir_isnormal($0);" "$$";
IR_ISSUBNORMAL: no_pre,no_post,var "@r $$;",declare "_FM_B_F(issubnormal)",exec "$$=ir_issubnormal($0);" "$$";
IR_ISZERO: no_pre,no_post,var "@r $$;",declare "_FM_B_F(iszero)",exec "$$=ir_iszero($0);" "$$";
IR_SIGNBIT: no_pre,no_post,var "@r $$;",declare "_FM_B_F(signbit)",exec "$$=ir_signbit($0);" "$$";
IR_ILOGB: no_pre,no_post,var "@r $$;",declare "_FM_I_F(ilogb)",exec "$$=ir_ilogb($0);" "$$";
R_COPYSIGN: no_pre,no_post,var "@r $$;",declare "_FM_F_F(copysign)",exec "$$=r_copysign($0,$1);" "$$";
R_NEXTUP: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(nextafter)",exec "$$=r_nextafter($0,1.0);" "$$";
R_NEXTDOWN: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(nextafter)",exec "$$=r_nextafter($0,-1.0);" "$$";
R_REMAINDER: no_pre,no_post,var "@r $$;",declare "_FM_F_F(remainder)",exec "$$=r_remainder($0,$1);" "$$";
R_FMOD: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(fmod)",exec "$$=r_fmod($0,$1);" "$$";
R_SCALBN: no_pre,no_post,var "@r $$;",declare "_FM_F_FI(scalbn)",exec "$$=r_scalbn($0,$1);" "$$";
R_J0: no_pre,no_post,var "@r $$;",declare "_FM_F_F(j0)",exec "$$=r_j0($0);" "$$";
R_J1: no_pre,no_post,var "@r $$;",declare "_FM_F_F(j1)",exec "$$=r_j1($0);" "$$";
R_JN: no_pre,no_post,var "@r $$;",declare "_FM_F_IF(jn)",exec "$$=r_jn($1,$0);" "$$";
R_Y0: no_pre,no_post,var "@r $$;",declare "_FM_F_F(y0)",exec "$$=r_y0($0);" "$$";
R_Y1: no_pre,no_post,var "@r $$;",declare "_FM_F_F(y1)",exec "$$=r_y1($0);" "$$";
R_YN: no_pre,no_post,var "@r $$;",declare "_FM_F_IF(yn)",exec "$$=r_yn($1,$0);" "$$";
R_ERF: no_pre,no_post,var "@r $$;",declare "_FM_F_F(erf)",exec "$$=r_erf($0);" "$$";
R_ERFC: no_pre,no_post,var "@r $$;",declare "_FM_F_F(erfc)",exec "$$=r_erfc($0);" "$$";
R_EXP: no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp)",exec "$$=r_exp($0);" "$$";
R_EXPM1: no_pre,no_post,var "@r $$;",declare "_FM_F_F(expm1)",exec "$$=r_expm1($0);" "$$";
R_EXP2: no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp2)",exec "$$=r_exp2($0);" "$$";
R_EXP10: no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp10)",exec "$$=r_exp10($0);" "$$";
R_LOG: no_pre,no_post,var "@r $$;",declare "_FM_F_F(log)",exec "$$=r_log($0);" "$$";
R_LOG1P: no_pre,no_post,var "@r $$;",declare "_FM_F_F(log1p)",exec "$$=r_log1p($0);" "$$";
R_LOG10: no_pre,no_post,var "@r $$;",declare "_FM_F_F(log10)",exec "$$=r_log10($0);" "$$";
R_POW: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(pow)",exec "$$=r_pow($0,$1);" "$$";
R_SINH: no_pre,no_post,var "@r $$;",declare "_FM_F_F(sinh)",exec "$$=r_sinh($0);" "$$";
R_COSH: no_pre,no_post,var "@r $$;",declare "_FM_F_F(cosh)",exec "$$=r_cosh($0);" "$$";
R_TANH: no_pre,no_post,var "@r $$;",declare "_FM_F_F(tanh)",exec "$$=r_tanh($0);" "$$";
R_ASINH: no_pre,no_post,var "@r $$;",declare "_FM_F_F(asinh)",exec "$$=r_asinh($0);" "$$";
R_ACOSH: no_pre,no_post,var "@r $$;",declare "_FM_F_F(acosh)",exec "$$=r_acosh($0);" "$$";
R_ATANH: no_pre,no_post,var "@r $$;",declare "_FM_F_F(atanh)",exec "$$=r_atanh($0);" "$$";
R_HYPOT: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(hypot)",exec "$$=r_hypot($0,$1);" "$$";
R_SIN: no_pre,no_post,var "@r $$;",declare "_FM_F_F(sin)",exec "$$=r_sin($0);" "$$";
R_COS: no_pre,no_post,var "@r $$;",declare "_FM_F_F(cos)",exec "$$=r_cos($0);" "$$";
SINCOS: no_pre,no_post,exec "sincos($0,&$1,&$2);";
R_TAN: no_pre,no_post,var "@r $$;",declare "_FM_F_F(tan)",exec "$$=r_tan($0);" "$$";
R_ASIN: no_pre,no_post,var "@r $$;",declare "_FM_F_F(asin)",exec "$$=r_asin($0);" "$$";
R_ACOS: no_pre,no_post,var "@r $$;",declare "_FM_F_F(acos)",exec "$$=r_acos($0);" "$$";
R_ATAN: no_pre,no_post,var "@r $$;",declare "_FM_F_F(atan)",exec "$$=r_atan($0);" "$$";
R_ATAN2: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(atan2)",exec "$$=r_atan2($0,$1);" "$$";
R_SINPI: no_pre,no_post,var "@r $$;",declare "_FM_F_F(sinpi)",exec "$$=r_sinpi($0);" "$$";
R_COSPI: no_pre,no_post,var "@r $$;",declare "_FM_F_F(cospi)",exec "$$=r_cospi($0);" "$$";
SINCOSPI: no_pre,no_post,exec "sincospi($0,&$1,&$2);";
R_TANPI: no_pre,no_post,var "@r $$;",declare "_FM_F_F(tanpi)",exec "$$=r_tanpi($0);" "$$";
R_ASINPI: no_pre,no_post,var "@r $$;",declare "_FM_F_F(asinpi)",exec "$$=r_asinpi($0);" "$$";
R_ACOSPI: no_pre,no_post,var "@r $$;",declare "_FM_F_F(acospi)",exec "$$=r_acospi($0);" "$$";
R_ATANPI: no_pre,no_post,var "@r $$;",declare "_FM_F_F(atanpi)",exec "$$=r_atanpi($0);" "$$";
R_ATAN2PI: no_pre,no_post,var "@r $$;",declare "_FM_F_FF(atan2pi)",exec "$$=r_atan2pi($0,$1);" "$$";
R_FABS: no_pre,no_post,var "@r $$;",declare "_FM_F_F(fabs)",exec "$$=r_fabs($0);" "$$";
R_LGAMMA: no_pre,no_post,var "@r $$;",declare "_FM_F_F(lgamma)",exec "$$=r_lgamma($0);" "$$";
R_SQRT: no_pre,no_post,var "@r $$;",declare "_FM_F_F(sqrt)",exec "$$=r_sqrt($0);" "$$";
R_CBRT: no_pre,no_post,var "@r $$;",declare "_FM_F_F(cbrt)",exec "$$=r_cbrt($0);" "$$";
ATOF: no_pre,no_post,var "@r $$;",exec "$$=atof($1->arr_part);" "$$";
FLT_INT: no_pre,no_post,var "@r $$;",exec "$$=FLTINT($0);" "$$";
FLT_FLTD: no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
FLT_FLTX: no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
FLT_FLTDX: no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
FLT_TRUNCATE: no_pre,no_post,var "@r $$;",exec "$$=FLTTRUNCATE($0);" "$$";
R_FLOOR: no_pre,no_post,var "@r $$;",declare "_FM_F_F(floor)",exec "$$=r_floor($0);" "$$";
R_CEIL: no_pre,no_post,var "@r $$;",declare "_FM_F_F(ceil)",exec "$$=r_ceil($0);" "$$";
FLT_ROUND: no_pre,no_post,var "@r $$;",exec "$$=FLTROUND($0);" "$$";
R_SIGNALING_NAN:no_pre,no_post,var "@r $$;",declare "_FM_F_I(signaling_nan)",exec "$$=r_signaling_nan($1);" "$$";
R_QUIET_NAN: no_pre,no_post,var "@r $$;",declare "_FM_F_I(quiet_nan)",exec "$$=r_quiet_nan($1);" "$$";
R_INFINITY: no_pre,no_post,var "@r $$;",declare "_FM_F(infinity)",exec "$$=r_infinity();" "$$";
MIN_NORMAL: no_pre,no_post,var "@r $$;",exec "$$=FLTMINNORMAL;" "$$";
MAX_NORMAL: no_pre,no_post,var "@r $$;",exec "$$=FLTMAXNORMAL;" "$$";
MIN_SUBNORMAL: no_pre,no_post,var "@r $$;",exec "$$=FLTMINSUBNORMAL;" "$$";
MAX_SUBNORMAL: no_pre,no_post,var "@r $$;",exec "$$=FLTMAXSUBNORMAL;" "$$";
FLT_STORE_INTO: volatile,no_pre,no_post,var "@r $$;",exec "$$=FLTSTORE($0,$1);" "$$";
FLT_STORE_PREC: volatile,no_pre,no_post,var "@r $$;",exec "$$=FLTSTOREPREC($0,$1,$2);" "$$";
FLT_GET_REP: no_pre,no_post,exec "rt_flt_get_rep($0,$1,$2,$3);";
-- the following definitions assume that all floating point
-- operations return NaN if used with wrong arguments (a la IEEE)
-- If this is not the case for some machines, all functions that
-- could break should get a 'fragile'
FLTD_PLUS: no_pre,no_post,var "@r $$;",exec "$$=$0+$1;" "$$";
FLTD_MINUS: no_pre,no_post,var "@r $$;",exec "$$=$0-$1;" "$$";
FLTD_NEGATE: no_pre,no_post,var "@r $$;",exec "$$= -$0;" "$$";
FLTD_TIMES: no_pre,no_post,var "@r $$;",exec "$$=$0*$1;" "$$";
FLTD_DIV: no_pre,no_post,var "@r $$;",exec "$$=FLTDIV($0,$1);" "$$";
FLTD_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
FLTD_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
FLTD_FINITE: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=finite($0)!=0;" "$$";
FLTD_ISINF: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=isinf($0)!=0;" "$$";
FLTD_ISNORMAL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=isnormal($0)!=0;" "$$";
FLTD_ISSUBNORMAL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=issubnormal($0)!=0;" "$$";
FLTD_ISZERO: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=iszero($0)!=0;" "$$";
FLTD_SIGNBIT: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=signbit($0);" "$$";
FLTD_ILOGB: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=ilogb($0);" "$$";
FLTD_COPYSIGN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=copysign($0);" "$$";
FLTD_NEXTUP: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=nextafter($0,1.0d);" "$$";
FLTD_NEXTDOWN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=nextafter($0,-1.0d);" "$$";
FLTD_REMAINDER: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=remainder($0);" "$$";
FLTD_FMOD: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=fmod($0);" "$$";
FLTD_SCALBN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=scalbn($0);" "$$";
FLTD_J0: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=j0($0);" "$$";
FLTD_J1: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=j1($0);" "$$";
FLTD_JN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=jn($0);" "$$";
FLTD_Y0: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=y0($0);" "$$";
FLTD_Y1: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=y1($0);" "$$";
FLTD_YN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=yn($0);" "$$";
FLTD_ERF: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=erf($0);" "$$";
FLTD_ERFC: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=erfc($0);" "$$";
FLTD_EXP: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=exp($0);" "$$";
FLTD_EXPM1: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=expm1($0);" "$$";
FLTD_EXP2: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=exp2($0);" "$$";
FLTD_EXP10: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDEXP10($0);" "$$";
FLTD_LOG: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log($0);" "$$";
FLTD_LOG1P: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log1p($0);" "$$";
FLTD_LOG10: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log10($0);" "$$";
FLTD_POW: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=pow($0,$1);" "$$";
FLTD_SINH: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sinh($0);" "$$";
FLTD_COSH: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cosh($0);" "$$";
FLTD_TANH: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tanh($0);" "$$";
FLTD_ASINH: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asinh($0);" "$$";
FLTD_ACOSH: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acosh($0);" "$$";
FLTD_ATANH: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atanh($0);" "$$";
FLTD_HYPOT: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=hypot($0);" "$$";
FLTD_SIN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sin($0);" "$$";
FLTD_COS: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cos($0);" "$$";
FLTD_SINCOS: no_pre,no_post,declare "#include <math.h>",exec "sincos($0,&$1,&$2);";
FLTD_TAN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tan($0);" "$$";
FLTD_ASIN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asin($0);" "$$";
FLTD_ACOS: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acos($0);" "$$";
FLTD_ATAN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan($0);" "$$";
FLTD_ATAN2: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan2($0,$1);" "$$";
FLTD_SINPI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sinpi($0);" "$$";
FLTD_COSPI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cospi($0);" "$$";
FLTD_SINCOSPI: no_pre,no_post,declare "#include <math.h>",exec "sincospi($0,&$1,&$2);";
FLTD_TANPI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tanpi($0);" "$$";
FLTD_ASINPI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asinpi($0);" "$$";
FLTD_ACOSPI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acospi($0);" "$$";
FLTD_ATANPI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atanpi($0);" "$$";
FLTD_ATAN2PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan2pi($0,$1);" "$$";
FLTD_FABS: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=fabs($0);" "$$";
FLTD_LGAMMA: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=lgamma($0);" "$$";
FLTD_SQRT: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sqrt($0);" "$$";
FLTD_CBRT: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cbrt($0);" "$$";
FLTD_STORE_INTO: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDSTORE($0,$1);" "$$";
FLTD_STORE_INTO_PREC: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDSTOREPREC($0,$1,$2);" "$$";
FLTD_ATOF: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atof($1->arr_part);" "$$";
FLTD_INT: no_pre,no_post,var "@r $$;",exec "$$=(INT)$0;" "$$";
FLTD_FLT: no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
FLTD_FLTX: no_pre,no_post,var "@r $$;",exec "$$=(FLTX)$0;" "$$";
FLTD_FLTDX: no_pre,no_post,var "@r $$;",exec "$$=(FLTDX)$0;" "$$";
FLTD_TRUNCATE: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDTRUNCATE($0);" "$$";
FLTD_FLOOR: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=floor($0);" "$$";
FLTD_CEIL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=ceil($0);" "$$";
FLTD_ROUND: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDROUND($0);" "$$";
FLTD_PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI;" "$$";
FLTD_E: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_E;" "$$";
FLTD_SQRT_2: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_SQRT2;" "$$";
FLTD_LOG_2: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG2;" "$$";
FLTD_LOG2_E: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG2E;" "$$";
FLTD_LOG10_E: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG10E;" "$$";
FLTD_LOG_10: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LN10;" "$$";
FLTD_HALF_PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI_2;" "$$";
FLTD_QUARTER_PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI_4;" "$$";
FLTD_INV_SQRT_2: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_SQRT1_2;" "$$";
FLTD_INV_PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_1_PI;" "$$";
FLTD_DOUBLE_INV_PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_2_PI;" "$$";
FLTD_DOUBLE_SQRT_PI: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_2_SQRTPI;" "$$";
FLTD_SIGNALING_NAN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=signaling_nan($1);" "$$";
FLTD_QUIET_NAN: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=quiet_nan($1);" "$$";
FLTD_INFINITY: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=infinity;" "$$";
FLTD_MIN_NORMAL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINNORMAL;" "$$";
FLTD_MAX_NORMAL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMAXNORMAL;" "$$";
FLTD_MIN_SUBNORMAL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINSUBNORMAL;" "$$";
FLTD_MAX_SUBNORMAL: no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINSUBNORMAL;" "$$";
FLTD_GET_REP: no_pre,no_post,exec "rt_fltd_get_rep($0,$1,$2,$3,$4);";
INT_PLUS: arith,no_pre,no_post,var "@r $$;",exec "$$=INTPLUS($0,$1);" "$$";
INT_MINUS: arith,no_pre,no_post,var "@r $$;",exec "$$=INTMINUS($0,$1);" "$$";
INT_NEGATE: arith,no_pre,no_post,var "@r $$;",exec "$$=INTMINUS(0,$0);" "$$";
INT_TIMES: arith,no_pre,no_post,var "@r $$;",exec "$$=INTTIMES($0,$1);" "$$";
INT_DIV: fragile,no_pre,no_post,var "@r $$;",exec "$$=INTDIV($0,$1);" "$$";
INT_MOD: fragile,no_pre,no_post,var "@r $$;",exec "$$=INTMOD($0,$1);" "$$";
INT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
INT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
INT_BOOL: no_pre,no_post,var "@r $$;",exec "$$=(BOOL)$0;" "$$";
INT_FLT: no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
INT_FLTD: no_pre,no_post,var "@r $$;",exec "$$=(FLTD)$0;" "$$";
INT_FLTX: no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
INT_FLTDX: no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
INT_CHAR: no_pre,no_post,var "@r $$;",exec "$$=(CHAR)$0;" "$$";
INT_C_UNSIGNED_INT: no_pre,no_post,var "@r $$;",exec "$$=(unsigned int)$0;" "$$";
INT_INT: no_pre,no_post,exec "$0";
INT_ABS: no_pre,no_post,var "@r $$;",exec "$$=($0<0)?-$0:$0;" "$$";
INT_SQUARE: arith,no_pre,no_post,var "@r $$;",exec "$$=INTTIMES($0,$0);" "$$";
INT_MAX: no_pre,no_post,var "@r $$;",exec "$$=($0>$1)?$0:$1;" "$$";
INT_MIN: no_pre,no_post,var "@r $$;",exec "$$=($0<$1)?$0:$1;" "$$";
INT_IS_EVEN: no_pre,no_post,var "@r $$;",exec "$$=($0&1)==0;" "$$";
INT_IS_ODD: no_pre,no_post,var "@r $$;",exec "$$=($0&1)!=0;" "$$";
INT_IS_BETWEEN: no_pre,no_post,var "@r $$;",exec "$$=($1<=$0&&$0<=$2)||($2<=$0&&$0<=$1);" "$$";
INT_UPLUS: arith,no_pre,no_post,var "@r $$;",exec "$$=INTUPLUS($0,$1);" "$$";
INT_UMINUS: arith,no_pre,no_post,var "@r $$;",exec "$$=INTUMINUS($0,$1);" "$$";
INT_UTIMES: arith,no_pre,no_post,var "@r $$;",exec "$$=INTUTIMES($0,$1);" "$$";
INT_UDIV: fragile,no_pre,no_post,var "@r $$;",exec "$$=INTUDIV($0,$1);" "$$";
INT_UMOD: fragile,no_pre,no_post,var "@r $$;",exec "$$=INTUMOD($0,$1);" "$$";
INT_MPLUS: no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0+(unsigned)$1);" "$$";
INT_MMINUS: no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0-(unsigned)$1);" "$$";
INT_MNEGATE: no_pre,no_post,var "@r $$;",exec "$$=(-(unsigned)$0);" "$$";
INT_MTIMES: no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0*(unsigned)$1);" "$$";
INT_MDIV: fragile,no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0/(unsigned)$1);" "$$";
INT_MMOD: fragile,no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0%%(unsigned)$1);" "$$";
INT_BNOT: no_pre,no_post,var "@r $$;",exec "$$=~$0;" "$$";
INT_BAND: no_pre,no_post,var "@r $$;",exec "$$=$0&$1;" "$$";
INT_BOR: no_pre,no_post,var "@r $$;",exec "$$=$0|$1;" "$$";
INT_BXOR: no_pre,no_post,var "@r $$;",exec "$$=$0\\^$1;" "$$";
INT_LSHIFT: no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0)<<((unsigned)$1);" "$$";
INT_RSHIFT: no_pre,no_post,var "@r $$;",exec "$$=INTRSHIFT($0,$1);" "$$";
INT_URSHIFT: no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0)>>((unsigned)$1);" "$$";
INT_CREATE_STR: fragile,no_pre,no_post,var "@r $$;",exec "$$=atoi(((STR)$1)->arr_part);" "$$";
INT_AGET: no_pre,no_post,var "@r $$;",exec "$$=((CHAR)(($0&(1<<$1))!=0));" "$$";
INT_ASET: no_pre,no_post,var "@r $$;",exec "$$=((($0)&(~(1<<($1))))|(($2)<<($1)));" "$$";
INT_MAXINT: no_pre,no_post,var "INT $$=SINT_MAX;",exec "$$";
INT_MININT: no_pre,no_post,var "INT $$=SINT_MIN;",exec "$$";
INT_TIMESB: no_pre,no_post,
break "$0";
INT_TIMESB_INT: no_pre,no_post,
break "$0",
temp "@r a$$;",
iter "a$$=$#;" "a$$";
INT_FORB: no_pre,no_post,
var "INT $$,$$m;",
init "$$=$0-1;$$m=$1;",
iter "if(($1--)<=0) @@;$$++;" "$$";
INT_UPB: no_pre,no_post,
var "INT $$;",
init "$$=$0-1;",
iter "$$++;" "$$";
INT_UPTOB: no_pre,no_post,
var "INT $$,$$m;",
init "$$=$0-1;$$m=$1;",
iter "if($$++>=$$m) @@;" "$$";
INT_DOWNTOB: no_pre,no_post,
var "INT $$,$$m;",
init "$$=$0+1;$$m=$1;",
iter "if($$--<=$$m) @@;" "$$";
-- note: all ACOPY macros are hard coded into
-- the compiler. This was needed especially for pSather to
-- achieve highest performance. However, you should not delete
-- them here, as the compiler still needs some of the information
-- in this file.
STR_ACOPY_FSTR_INT: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "STRACOPYNF($0,$1,$2);",
f_exec "if(^0&&^1) STRACOPYNF($0,$1,$2); else F_STRACOPYNF($0,$1,$2);";
STR_ACOPY_STR_INT: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "STRACOPYN($0,$1,$2);",
f_exec "if(^0&&^1) STRACOPYN($0,$1,$2); else F_STRACOPYN($0,$1,$2);";
-- note: all ACOPY macros are hard coded int
-- the compiler. This was needed especially for pSather to
-- achieve highest performance. However, you should not delete
-- them here, as the compiler still needs some of the information
-- in this file.
FSTR_ACOPY_FSTR: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "FSTRACOPYF($0,$1);",
f_exec "if(^0 && ^1) FSTRACOPYF($0,$1); else F_FSTRACOPYF($0,$1);";
FSTR_ACOPY_STR: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "FSTRACOPY($0,$1);",
f_exec "if(^0 && ^1) FSTRACOPY($0,$1); else F_FSTRACOPY($0,$1);";
FSTR_ACOPYN_FSTR_INT: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "FSTRACOPYNF($0,$1,$2);",
f_exec "if(^0 && ^1) FSTRACOPYNF($0,$1,$2); else F_FSTRACOPYNF($0,$1,$2);";
FSTR_ACOPYN_STR_INT: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "FSTRACOPYN($0,$1,$2);",
f_exec "if(^0 && ^1) FSTRACOPYN($0,$1,$2); else F_FSTRACOPYN($0,$1,$2);";
FSTR_ACOPY_INT_FSTR: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "FSTRACOPYIF($0,$1,$2);",
f_exec "if(^0 && ^2) FSTRACOPYIF($0,$1,$2); else F_FSTRACOPYIF($0,$1,$2);";
FSTR_ACOPY_INT_STR: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "FSTRACOPYIS($0,$1,$2);",
f_exec "if(^0 && ^2) FSTRACOPYIS($0,$1,$2); else F_FSTRACOPYIS($0,$1,$2);";
FSTR_MEMCMP_FSTR_INT: no_pre,no_post,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
FSTR_MEMCMP_STR_INT: no_pre,no_post,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
ARRAY_SIZE: no_pre,no_post,reads "@0::asize",var "@r $$;",
exec "$$=($0)==NULL?0:ASIZE(@(0)$0);" "$$",
f_exec "$$=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);" "$$";
ARRAY_CLEAR: no_pre,no_post,writes "@0::[],@0::asize",
exec "if($0!=NULL) AREFACLEAR($0);",
f_exec "if(!FVOID($0)) { if(^0) AREFACLEAR($0); else F_AREFACLEAR_A(@0,$0); }";
ARRAY_COPY: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "if($0!=NULL && $1!=NULL) AREFACOPY($0,$1);",
f_exec "if(!FVOID($0) && !FVOID($1)) { if(^0 && ^1) AREFACOPY($0,$1); else F_AREFACOPY_AA(@0,@P0,$0,$1); }";
ARRAY_COPY_BEG: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "if($2!=NULL) AREFACOPYB($0,$1,$2);",
f_exec "if(!FVOID($2)) { if(^0 && ^1) AREFACOPYB($0,$1,$2); else F_AREFACOPYB_AA(@0,@P0,$0,$1,$2); }";
ARRAY_COPY_BEG_NUM: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "AREFACOPYBN($0,$1,$2,$3);",
f_exec "if(^0 && ^1) AREFACOPYBN($0,$1,$2,$3); else F_AREFACOPYBN_AA(@0,@P0,$0,$1,$2,$3);";
ARRAY_COPY_BEG_NUM_SRCBEG: no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
exec "AREFACOPYBNS($0,$1,$2,$3,$4);",
f_exec "F_AREFACOPYBNS_AA(@0,@P0,$0,$1,$2,$3,$4);";
ARRAY_ELTB: reads "@0::[]" "@0::asize",
attr_access 1,
var "INT $$br;",
init "$$br=$0==NULL?0:ASIZE(@(0)$0);",
break "$$br",
temp "@r a$$;",
iter "a$$=ARR(@(0)$0,$#);" "a$$",
f_init "$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
f_iter "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$#); else F_R_RARR_NA(a$$,@0,$0,$#);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$#); else F_VA_RARR_NA(a$$,@0,$0,$#);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif"
"a$$";
ARRAY_ELT_BEGB: reads "@0::[]" "@0::asize",
var "INT $$c,$$s;",
attr_access 1,
temp "@r a$$;",
init "$$c=$1-1;$$s=$0==0?0:ASIZE(@(0)$0);",
f_init "$$c=$1-1;$$s=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
iter "if(++$$c>=$$s) @@;"
"a$$=ARR(@(0)$0,$$c);" "a$$",
f_iter "if(++$$c>=$$s) @@;"
"#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif"
"a$$";
ARRAY_ELT_BEG_NUMB: reads "@0::[]" "@0::asize",
var "INT $$c,$$m;",
temp "@r a$$;",
attr_access 1,
init "$$c=$1-1;$$m=$1+$2;",
iter "if(++$$c>=$$m) @@;"
"a$$=ARR(@(0)$0,$$c);" "a$$",
f_iter "if(++$$c>=$$m) @@;"
"#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif"
"a$$";
ARRAY_ELT_BEG_NUM_STEPB: reads "@0::[]" "@0::asize",
var "INT $$c,$$m;",
attr_access 1,
temp "@r a$$;",
init "$$c=$1;$$m=$1+$2*$3;",
iter "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m)@@;"
"a$$=ARR(@(0)$0,$$c);" "$$c+=$3;" "a$$",
f_iter "if($$c>=$$m) @@;"
"#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);"
"#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);"
"#endif"
"$$c+=$3;" "a$$";
ARRAY_SETB: writes "@0::[]",
attr_access 1,
reads "@0::asize",
var "INT $$br;",
init "$$br=$0==NULL?0:ASIZE(@(0)$0);",
f_init "$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
break "$$br",
iter "SARR(@(0)$0,$#,@(1)$1);",
f_iter "#if %1==0" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_R_WARR_NA(@0,$0,$#,$1);"
"#elif %1==1" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_VA_WARR_NA(@0,$0,$#,$1);"
"#elif %1==2" "if(^0) { CHK_BOUNDS($#,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$#],@1,$1);} else F_V_WARR_LP(@0,$0,$#,@1,$1);"
"#endif";
ARRAY_SET_BEGB: writes "@0::[]",
attr_access 1,
reads "@0::asize",
var "INT $$c,$$s;",
init "$$c=$1-1;$$s=$0==NULL?0:ASIZE(@(0)$0);",
f_init "$$c=$1-1;$$s=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
iter "if(++$$c>=$$s) @@;"
"SARR(@(0)$0,$$c,@(2)$2);",
f_iter "if(++$$c>=$$s) @@;"
"#if %2==0" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_R_WARR_NA(@0,$0,$$c,$2);"
"#elif %2==1" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_VA_WARR_NA(@0,$0,$$c,$2);"
"#elif %2==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@2,$2);} else F_V_WARR_LP(@0,$0,$$c,@2,$2);"
"#endif";
ARRAY_SET_BEG_NUMB: writes "@0::[]",
attr_access 1,
reads "@0::asize",
var "INT $$c,$$m;",
init "$$c=$1-1;$$m=$1+$2;",
iter "if(++$$c>=$$m) @@;"
"SARR(@(0)$0,$$c,@(3)$3);",
f_iter "if(++$$c>=$$m) @@;"
"#if %3==0" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_R_WARR_NA(@0,$0,$$c,$3);"
"#elif %3==1" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_VA_WARR_NA(@0,$0,$$c,$3);"
"#elif %3==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@3,$3);} else F_V_WARR_LP(@0,$0,$$c,@3,$3);"
"#endif";
ARRAY_SET_BEG_NUM_STEPB: reads "@0::[]",
attr_access 1,
writes "@0::asize",
var "INT $$c,$$m;",
init "$$c=$1;$$m=$1+$2*$3;",
iter "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m)@@;"
"SARR(@(0)$0,$$c,@(4)$4);" "$$c+=$3;",
f_iter "if($$c>=$$m) @@;"
"#if %4==0" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_R_WARR_NA(@0,$0,$$c,$4);"
"#elif %4==1" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_VA_WARR_NA(@0,$0,$$c,$4);"
"#elif %4==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@4,$4);} else F_V_WARR_LP(@0,$0,$$c,@4,$4);"
"#endif"
"$$c+=$3;";
ARRAY_INDB: reads "@0::asize",
var "INT $$br;",
init "$$br=$0==NULL?0:ASIZE(@(0)$0);",
f_init "$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
break "$$br",
temp "@r r$$;",
iter "r$$=$#;" "r$$";
FILE_STDIN: no_pre,no_post,declare "#include <stdio.h>",exec "stdin";
FILE_STDOUT: no_pre,no_post,declare "#include <stdio.h>",exec "stdout";
FILE_STDERR: no_pre,no_post,declare "#include <stdio.h>",exec "stderr";
FILE_CLEAR: volatile,no_pre,no_post,declare "#include <stdio.h>",exec "clearerr((FILE *)$0);";
FILE_FWRITE_FSTR: volatile,no_pre,no_post,declare "#include <stdio.h>",var "@r $$;",exec "$$=fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$",
f_exec "$$=p_fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$";
FILE_FWRITE_STR: volatile,no_pre,no_post,declare "#include <stdio.h>",var "@r $$;",exec "$$=fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$",
f_exec "$$=p_fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$";
IN_GETCHAR: volatile,no_pre,no_post,var "@r $$;",declare "#include <stdio.h>",exec "$$=(INT)getchar();" "$$";
IN_GET_STR_SIZED: volatile,no_pre,no_post,declare "#include <stdio.h>",exec "INGETSTRSIZED(((@1)$1),$2);";
SYS_DESTROY: volatile,no_pre,no_post,
exec "SYSDESTROY($1);",
f_exec "if(^0) SYSDESTROY($1); else F_SYSDESTROY($1);";
SYS_ID: no_pre,no_post,var "@r $$;",
exec "$$=SYSID($1);" "$$",
f_exec "$$=^0?SYSID($1):F_SYSID($1);" "$$";
SYS_TP: no_pre,no_post,var "@r $$;",
exec "$$=SYSTP($1);" "$$",
f_exec "$$=^0?SYSTP($1):F_SYSTP($1);" "$$";
SYS_STR_FOR_TP: no_pre,no_post,var "@r $$;",
exec "$$=SYSSTRFORTP($1);" "$$";
SYS_EXT_OB_FOR: no_pre,no_post,var "@r $$;",
exec "$$=SYSEXTOBFOR($1);" "$$";
SYS_OB_EQ: no_pre,no_post,var "@r $$;",
exec "$$=SYSOBEQ($1);" "$$",
f_exec "$$=(^0&&^1)?SYSOBEQ($1):F_SYSOBEQ($1);" "$$";
SYS_IMPORT: import,no_pre,no_post, exec "SYS_IMPORT;";
SYS_EXPORT: export,no_pre,no_post,exec "SYS_EXPORT;";
SYS_DEFER: no_pre,no_post,exec "SYS_DEFER;";
SYS_PSATHER_STATISTICS: exec "use_statistics((int)$1);";
SYS_PSATHER_TRACE: exec "use_trace((int)$1);";
TIME_SECONDS: volatile,no_pre,no_post,var "@r $$;",exec "$$=(FLTD)time(NULL);" "$$";
TIMES_NOW: volatile,no_pre,no_post,declare "#include <sys/times.h>" "#include <limits.h>",
var "struct tms $$;",
exec "$0->$.wall_time=times(&$$);"
"$0->$.sys_time=$$.tms_stime;"
"$0->$.user_time=$$.tms_utime;"
"$0->$.child_sys_time=$$.tms_cstime;"
"$0->$.child_user_time=$$.tms_cutime;";
TIMES_CLK: no_pre,no_post,var "@r $$;",exec "$$=CLK_TCK;",declare "#include <limits.h>";
MEMORY_NOW: no_pre,no_post,exec "$0->$.sbrk_size=(long)sbrk(0);"
"$0->$.gc_size=(long)GC_get_heap_size();";
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
THREAD_ID_NIL: no_pre,no_post,var "@r $$;",exec "$$=thr_no_thread();" "$$";
THREAD_ID_ME: no_pre,no_post,var "@r $$;",exec "$$=thr_ps_id();" "$$";
THREAD_ID_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=THR_SAME_ID($0,$1);" "$$";
THREAD_ID_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=THR_LT($0,$1);" "$$";
THREAD_ID_HASH: no_pre,no_post,var "@r $$;",exec "$$=THR_HASH($0);" "$$";
THREAD_ID_STR: no_pre,no_post,var "@r $$;char $$p[30];",
exec "thr_print_id($0,$$p);"
"$$=(@r)rt_arr_alloc(sizeof(struct STR_struct),STR_tag,sizeof(CHAR),strlen($$p)+1);"
"$$->asize=strlen($$p);"
"strcpy($$->arr_part,$$p);"
"$$";
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
TIMING_TIME: no_pre,no_post,
declare "int gettimeofday(struct timeval *,void *);"
"extern int start_sec;",
var "struct timeval $$now;",
exec "gettimeofday(&$$now,NULL);"
"*$1=$$now.tv_sec-start_sec;"
"*$2=$$now.tv_usec;";
TIMING_SLEEP: volatile,exec "sleep($1);";
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
LL_LOCK_INIT: no_pre,no_post,volatile,exec "$0->lck=LCK_CREATE;";
LL_LOCK_L_LCK: no_pre,no_post,volatile,exec "LCK_LOCK($0->lck);";
LL_LOCK_L_UNLCK: no_pre,no_post,volatile,exec "LCK_UNLOCK($0->lck);";
LL_LOCK_L_TRY: no_pre,no_post,volatile,var "@r $$;",exec "$$=LCK_TRY($0->lck);" "$$";
LL_LOCK_LCK: no_pre,no_post,volatile,exec "ll_lock_lck_remote($0);";
LL_LOCK_UNLCK: no_pre,no_post,volatile,exec "ll_lock_unlck_remote($0);";
LL_LOCK_TRY: no_pre,no_post,volatile,var "@r $$;",exec "$$=ll_lock_try_remote($0);" "$$";
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
SPINLOCK_INIT: no_pre,no_post,volatile,exec "SPINLOCK_CREATE($0);";
SPINLOCK_L_LCK: no_pre,no_post,volatile,exec "SPINLOCK_LCK($0);";
SPINLOCK_L_UNLCK: no_pre,no_post,volatile,exec "SPINLOCK_UNLCK($0);";
SPINLOCK_L_TRY: no_pre,no_post,volatile,var "@r $$;",exec "$$=SPINLOCK_TRY($0);" "$$";
SPINLOCK_LCK: no_pre,no_post,volatile,exec "spinlock_lck_remote($0);";
SPINLOCK_UNLCK: no_pre,no_post,volatile,exec "spinlock_unlck_remote($0);";
SPINLOCK_TRY: no_pre,no_post,volatile,var "@r $$;",exec "$$=spinlock_try_remote($0);" "$$";
F_INTEGER_CREATE_INT: no_pre,no_post,exec "INTF_INTEGER($1)";
F_INTEGER_INT: no_pre,no_post,exec "F_INTEGERINT($0)";
F_INTEGER_ZERO: no_pre,no_post,exec "F_INTEGER_zero";
F_INTEGER_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERPLUS($0,$1);" "$$";
F_INTEGER_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERMINUS($0,$1);" "$$";
F_INTEGER_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERTIMES($0,$1);" "$$";
F_INTEGER_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERDIV($0,$1);" "$$";
F_INTEGER_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=F_INTEGER_IS_EQ($0,$1);" "$$";
F_INTEGER_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=F_INTEGERIS_LT($0,$1);" "$$";
F_REAL_CREATE_FLT: no_pre,no_post,exec "FLTF_REAL($1)";
F_REAL_FLT: no_pre,no_post,exec "F_REALFLT($0)";
F_REAL_ZERO: no_pre,no_post,exec "F_REAL_zero";
F_REAL_PLUS: arith,no_pre,no_post,var "@r $$;",exec "$$=F_REALPLUS($0,$1);" "$$";
F_REAL_MINUS: arith,no_pre,no_post,var "@r $$;",exec "$$=F_REALMINUS($0,$1);" "$$";
F_REAL_TIMES: arith,no_pre,no_post,var "@r $$;",exec "$$=F_REALTIMES($0,$1);" "$$";
F_REAL_DIV: arith,no_pre,no_post,var "@r $$;",exec "$$=F_REALDIV($0,$1);" "$$";
F_REAL_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=F_REAL_IS_EQ($0,$1);" "$$";
F_REAL_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=F_REALIS_LT($0,$1);" "$$";
F_DOUBLE_CREATE_FLTD: no_pre,no_post,exec "FLTDF_DOUBLE($1)";
F_DOUBLE_FLTD: no_pre,no_post,exec "F_DOUBLEFLTD($0)";
F_DOUBLE_ZERO: no_pre,no_post,exec "F_DOUBLE_zero";
F_DOUBLE_PLUS: arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEPLUS($0,$1);" "$$";
F_DOUBLE_MINUS: arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEMINUS($0,$1);" "$$";
F_DOUBLE_TIMES: arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLETIMES($0,$1);" "$$";
F_DOUBLE_DIV: arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEDIV($0,$1);" "$$";
F_DOUBLE_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLE_IS_EQ($0,$1);" "$$";
F_DOUBLE_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEIS_LT($0,$1);" "$$";
F_LOGICAL_CREATE_BOOL: no_pre,no_post,exec "BOOLF_LOGICAL($1)";
F_LOGICAL_BOOL: no_pre,no_post,exec "F_LOGICALBOOL($0)";
F_LOGICAL_ZERO: no_pre,no_post,exec "F_LOGICAL_zero";
F_LOGICAL_NOT: no_pre,no_post,var "@r $$;",exec "$$=F_LOGICALNOT($0);" "$$";
F_LOGICAL_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=F_LOGICAL_IS_EQ($0,$1);" "$$";
F_LOGICAL_OR: no_pre,no_post,var "@r $$;",exec "$$=F_LOGICALOR($0,$1);" "$$";
F_LOGICAL_AND: no_pre,no_post,var "@r $$;",exec "$$=F_LOGICALAND($0,$1);" "$$";
F_CHARACTER_CREATE_CHAR: no_pre,no_post,exec "CHARF_CHARACTER($1)";
F_CHARACTER_CHAR: no_pre,no_post,exec "F_CHARACTERCHAR($0)";
F_CHARACTER_ZERO: no_pre,no_post,exec "F_CHARACTER_zero";
F_CHARACTER_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=F_CHARACTER_IS_EQ($0,$1);" "$$";
F_CHARACTER_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=F_CHARACTERIS_LT($0,$1);" "$$";
F_STRING_CREATE_CHAR: no_pre,no_post,var "@r $$;",
exec
"$$=(@0)ZALLOC(sizeof(@0_struct));"
"$$->address=(F_CHARACTER *)ZALLOC(sizeof(F_CHARACTER));"
"$$->size=(F_LENGTH)1;"
"*($$->address)=(F_CHARACTER)$1;"
"$$";
F_STRING_CREATE_STR: no_pre,no_post, reads "@1::asize",
var "@r $$;",
exec
"$$=(@0)ZALLOC(sizeof(@0_struct));"
"$$->address=(F_CHARACTER *)ZALLOC($1->asize);"
"$$->size=(F_LENGTH)$1->asize;"
"memcpy($$->address,$1->arr_part,$1->asize);"
"$$";
F_STRING_CREATE_INT: no_pre,no_post, reads "@1::asize",
var "@r $$;",
exec
"$$=(@0)ZALLOC(sizeof(@0_struct));"
"$$->address=(F_CHARACTER *)ZALLOC($1);"
"$$->size=(F_LENGTH)$1;"
"$$";
F_STRING_ADDRESS: no_pre,no_post, exec "$0->address";
F_STRING_SIZE: no_pre,no_post, exec "$0->size";
F_COMPLEX_READ_RE: no_pre,no_post, exec "$0.re";
F_COMPLEX_WRITE_RE: no_pre,no_post, exec "$0.re=$1;";
F_COMPLEX_READ_IM: no_pre,no_post, exec "$0.im";
F_COMPLEX_WRITE_IM: no_pre,no_post, exec "$0.im=$1;";
F_COMPLEX_ZERO: no_pre,no_post,exec "F_COMPLEX_zero";
F_DOUBLE_COMPLEX_READ_RE: no_pre,no_post, exec "$0.re";
F_DOUBLE_COMPLEX_WRITE_RE: no_pre,no_post, exec "$0.re=$1;";
F_DOUBLE_COMPLEX_READ_IM: no_pre,no_post, exec "$0.im";
F_DOUBLE_COMPLEX_WRITE_IM: no_pre,no_post, exec "$0.im=$1;";
F_DOUBLE_COMPLEX_ZERO: no_pre,no_post,exec "F_DOUBLE_COMPLEX_zero";
F_HANDLER_SET_HANDLER: no_pre,no_post, exec "$0=(@0)$1;";
F_HANDLER_INVOKE_HANDLER: no_pre,no_post, exec "F_HANDLERINVOKE_HANDLER($0)";
-- FORTRAN arrays
F_ARRAY_CREATE_INT: no_pre,no_post, exec "(@0)ZALLOC($1*sizeof(@P0))";
F_ARRAY_CREATE_ARRAY: no_pre,no_post, exec "(@0)$1->arr_part";
F_ARRAY2_CREATE_INT_INT: no_pre,no_post, exec "(@0)ZALLOC($1*$2*sizeof(@P0))";
F_ARRAY2_CREATE_ARRAY2: no_pre,no_post, exec "(@0)$1->arr_part";
F_ARRAY3_CREATE_INT_INT_INT: no_pre,no_post, exec "(@0)ZALLOC($1*$2*$3*sizeof(@P0))";
F_ARRAY3_CREATE_ARRAY3: no_pre,no_post, exec "(@0)$1->arr_part";
F_ARRAY2_CREATE_MAT: no_pre,no_post, exec "(@0)$1->arr_part";
C_CHAR_CREATE_CHAR: no_pre,no_post,exec "CHARC_CHAR($1)";
C_CHAR_CHAR: no_pre,no_post,exec "C_CHARCHAR($0)";
C_CHAR_ZERO: no_pre,no_post,exec "C_CHAR_zero";
C_CHAR_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARPLUS($0,$1);" "$$";
C_CHAR_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARMINUS($0,$1);" "$$";
C_CHAR_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARTIMES($0,$1);" "$$";
C_CHAR_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARDIV($0,$1);" "$$";
C_CHAR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_CHAR_IS_EQ($0,$1);" "$$";
C_CHAR_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_CHARIS_LT($0,$1);" "$$";
C_UNSIGNED_CHAR_CREATE_CHAR: no_pre,no_post,exec "CHARC_UNSIGNED_CHAR($1)";
C_UNSIGNED_CHAR_CHAR: no_pre,no_post,exec "C_UNSIGNED_CHARCHAR($0)";
C_UNSIGNED_CHAR_ZERO: no_pre,no_post,exec "C_UNSIGNED_CHAR_zero";
C_UNSIGNED_CHAR_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARPLUS($0,$1);" "$$";
C_UNSIGNED_CHAR_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARMINUS($0,$1);" "$$";
C_UNSIGNED_CHAR_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARTIMES($0,$1);" "$$";
C_UNSIGNED_CHAR_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARDIV($0,$1);" "$$";
C_UNSIGNED_CHAR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_CHAR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_CHAR_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_CHARIS_LT($0,$1);" "$$";
C_SIGNED_CHAR_CREATE_CHAR: no_pre,no_post,exec "CHARC_SIGNED_CHAR($1)";
C_SIGNED_CHAR_CHAR: no_pre,no_post,exec "C_SIGNED_CHARCHAR($0)";
C_SIGNED_CHAR_ZERO: no_pre,no_post,exec "C_SIGNED_CHAR_zero";
C_SIGNED_CHAR_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARPLUS($0,$1);" "$$";
C_SIGNED_CHAR_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARMINUS($0,$1);" "$$";
C_SIGNED_CHAR_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARTIMES($0,$1);" "$$";
C_SIGNED_CHAR_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARDIV($0,$1);" "$$";
C_SIGNED_CHAR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_SIGNED_CHAR_IS_EQ($0,$1);" "$$";
C_SIGNED_CHAR_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_SIGNED_CHARIS_LT($0,$1);" "$$";
C_SHORT_CREATE_INT: no_pre,no_post,exec "INTC_SHORT($1)";
C_SHORT_INT: no_pre,no_post,exec "C_SHORTINT($0)";
C_SHORT_ZERO: no_pre,no_post,exec "C_SHORT_zero";
C_SHORT_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTPLUS($0,$1);" "$$";
C_SHORT_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTMINUS($0,$1);" "$$";
C_SHORT_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTTIMES($0,$1);" "$$";
C_SHORT_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTDIV($0,$1);" "$$";
C_SHORT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_SHORT_IS_EQ($0,$1);" "$$";
C_SHORT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_SHORTIS_LT($0,$1);" "$$";
C_INT_CREATE_INT: no_pre,no_post,exec "INTC_INT($1)";
C_INT_INT: no_pre,no_post,exec "C_INTINT($0)";
C_INT_ZERO: no_pre,no_post,exec "C_INT_zero";
C_INT_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTPLUS($0,$1);" "$$";
C_INT_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTMINUS($0,$1);" "$$";
C_INT_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTTIMES($0,$1);" "$$";
C_INT_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTDIV($0,$1);" "$$";
C_INT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_INT_IS_EQ($0,$1);" "$$";
C_INT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_INTIS_LT($0,$1);" "$$";
C_LONG_CREATE_INT: no_pre,no_post,exec "INTC_LONG($1)";
C_LONG_INT: no_pre,no_post,exec "C_LONGINT($0)";
C_LONG_ZERO: no_pre,no_post,exec "C_LONG_zero";
C_LONG_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGPLUS($0,$1);" "$$";
C_LONG_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGMINUS($0,$1);" "$$";
C_LONG_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGTIMES($0,$1);" "$$";
C_LONG_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGDIV($0,$1);" "$$";
C_LONG_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_LONG_IS_EQ($0,$1);" "$$";
C_LONG_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_LONGIS_LT($0,$1);" "$$";
C_UNSIGNED_SHORT_CREATE_INT: no_pre,no_post,exec "INTC_UNSIGNED_SHORT($1)";
C_UNSIGNED_SHORT_INT: no_pre,no_post,exec "C_UNSIGNED_SHORTINT($0)";
C_UNSIGNED_SHORT_ZERO: no_pre,no_post,exec "C_UNSIGNED_SHORT_zero";
C_UNSIGNED_SHORT_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTPLUS($0,$1);" "$$";
C_UNSIGNED_SHORT_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTMINUS($0,$1);" "$$";
C_UNSIGNED_SHORT_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTTIMES($0,$1);" "$$";
C_UNSIGNED_SHORT_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTDIV($0,$1);" "$$";
C_UNSIGNED_SHORT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_SHORT_IS_EQ($0,$1);" "$$";
C_UNSIGNED_SHORT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_SHORTIS_LT($0,$1);" "$$";
C_UNSIGNED_INT_CREATE_INT: no_pre,no_post,exec "INTC_UNSIGNED_INT($1)";
C_UNSIGNED_INT_INT: no_pre,no_post,exec "C_UNSIGNED_INTINT($0)";
C_UNSIGNED_INT_ZERO: no_pre,no_post,exec "C_UNSIGNED_INT_zero";
C_UNSIGNED_INT_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTPLUS($0,$1);" "$$";
C_UNSIGNED_INT_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTMINUS($0,$1);" "$$";
C_UNSIGNED_INT_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTTIMES($0,$1);" "$$";
C_UNSIGNED_INT_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTDIV($0,$1);" "$$";
C_UNSIGNED_INT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_INT_IS_EQ($0,$1);" "$$";
C_UNSIGNED_INT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_INTIS_LT($0,$1);" "$$";
C_UNSIGNED_LONG_CREATE_INT: no_pre,no_post,exec "INTC_UNSIGNED_LONG($1)";
C_UNSIGNED_LONG_INT: no_pre,no_post,exec "C_UNSIGNED_LONGINT($0)";
C_UNSIGNED_LONG_ZERO: no_pre,no_post,exec "C_UNSIGNED_LONG_zero";
C_UNSIGNED_LONG_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGPLUS($0,$1);" "$$";
C_UNSIGNED_LONG_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGMINUS($0,$1);" "$$";
C_UNSIGNED_LONG_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGTIMES($0,$1);" "$$";
C_UNSIGNED_LONG_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGDIV($0,$1);" "$$";
C_UNSIGNED_LONG_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_LONG_IS_EQ($0,$1);" "$$";
C_UNSIGNED_LONG_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_LONGIS_LT($0,$1);" "$$";
C_FLOAT_CREATE_FLT: no_pre,no_post,exec "FLTC_FLOAT($1)";
C_FLOAT_FLT: no_pre,no_post,exec "C_FLOATFLT($0)";
C_FLOAT_ZERO: no_pre,no_post,exec "C_FLOAT_zero";
C_FLOAT_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATPLUS($0,$1);" "$$";
C_FLOAT_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATMINUS($0,$1);" "$$";
C_FLOAT_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATTIMES($0,$1);" "$$";
C_FLOAT_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATDIV($0,$1);" "$$";
C_FLOAT_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_FLOAT_IS_EQ($0,$1);" "$$";
C_FLOAT_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_FLOATIS_LT($0,$1);" "$$";
C_DOUBLE_CREATE_FLTD: no_pre,no_post,exec "FLTDC_DOUBLE($1)";
C_DOUBLE_FLTD: no_pre,no_post,exec "C_DOUBLEFLTD($0)";
C_DOUBLE_ZERO: no_pre,no_post,exec "C_DOUBLE_zero";
C_DOUBLE_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEPLUS($0,$1);" "$$";
C_DOUBLE_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEMINUS($0,$1);" "$$";
C_DOUBLE_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLETIMES($0,$1);" "$$";
C_DOUBLE_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEDIV($0,$1);" "$$";
C_DOUBLE_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_DOUBLE_IS_EQ($0,$1);" "$$";
C_DOUBLE_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_DOUBLEIS_LT($0,$1);" "$$";
C_LONG_DOUBLE_CREATE_FLTD: no_pre,no_post,exec "FLTDC_LONG_DOUBLE($1)";
C_LONG_DOUBLE_FLTD: no_pre,no_post,exec "C_LONG_DOUBLEFLTD($0)";
C_LONG_DOUBLE_ZERO: no_pre,no_post,exec "C_LONG_DOUBLE_zero";
C_LONG_DOUBLE_PLUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEPLUS($0,$1);" "$$";
C_LONG_DOUBLE_MINUS: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEMINUS($0,$1);" "$$";
C_LONG_DOUBLE_TIMES: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLETIMES($0,$1);" "$$";
C_LONG_DOUBLE_DIV: arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEDIV($0,$1);" "$$";
C_LONG_DOUBLE_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_LONG_DOUBLE_IS_EQ($0,$1);" "$$";
C_LONG_DOUBLE_IS_LT: no_pre,no_post,var "@r $$;",exec "$$=C_LONG_DOUBLEIS_LT($0,$1);" "$$";
C_PTR_CREATE_C_CHAR_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_UNSIGNED_CHAR_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_SIGNED_CHAR_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_SHORT_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_INT_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_LONG_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_UNSIGNED_SHORT_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_UNSIGNED_INT_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_UNSIGNED_LONG_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_FLOAT_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_DOUBLE_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_CREATE_C_LONG_DOUBLE_PTR: no_pre,no_post,exec "(@0)$1";
C_PTR_ZERO: no_pre,no_post,exec "C_PTR_zero";
C_CHAR_PTR_ZERO: no_pre,no_post,exec "C_CHAR_PTR_zero";
C_UNSIGNED_CHAR_PTR_ZERO: no_pre,no_post,exec "C_UNSIGNED_CHAR_PTR_zero";
C_SIGNED_CHAR_PTR_ZERO: no_pre,no_post,exec "C_SIGNED_CHAR_PTR_zero";
C_SHORT_PTR_ZERO: no_pre,no_post,exec "C_SHORT_PTR_zero";
C_INT_PTR_ZERO: no_pre,no_post,exec "C_INT_PTR_zero";
C_LONG_PTR_ZERO: no_pre,no_post,exec "C_LONG_PTR_zero";
C_UNSIGNED_SHORT_PTR_ZERO: no_pre,no_post,exec "C_UNSIGNED_SHORT_PTR_zero";
C_UNSIGNED_INT_PTR_ZERO: no_pre,no_post,exec "C_UNSIGNED_INT_PTR_zero";
C_UNSIGNED_LONG_PTR_ZERO: no_pre,no_post,exec "C_UNSIGNED_LONG_PTR_zero";
C_FLOAT_PTR_ZERO: no_pre,no_post,exec "C_FLOAT_PTR_zero";
C_DOUBLE_PTR_ZERO: no_pre,no_post,exec "C_DOUBLE_PTR_zero";
C_LONG_DOUBLE_PTR_ZERO: no_pre,no_post,exec "C_LONG_DOUBLE_PTR_zero";
C_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_PTR_IS_EQ($0,$1);" "$$";
C_CHAR_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_CHAR_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_SIGNED_CHAR_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_SIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_SHORT_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_SHORT_PTR_IS_EQ($0,$1);" "$$";
C_INT_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_INT_PTR_IS_EQ($0,$1);" "$$";
C_LONG_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_LONG_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_SHORT_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_SHORT_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_INT_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_INT_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_LONG_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_UNSIGNED_LONG_PTR_IS_EQ($0,$1);" "$$";
C_FLOAT_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_FLOAT_PTR_IS_EQ($0,$1);" "$$";
C_DOUBLE_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
C_LONG_DOUBLE_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec "$$=C_LONG_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
CONVERT_FROM_C_PTR_CREATE_C_PTR: no_pre,no_post,exec "(@0)$1";